package language_translator

import (
	"github.com/gin-gonic/gin/binding"
	"github.com/go-playground/locales/en"
	"github.com/go-playground/locales/zh"
	ut "github.com/go-playground/universal-translator"
	"github.com/go-playground/validator/v10"
	enTranslations "github.com/go-playground/validator/v10/translations/en"
	zhTranslations "github.com/go-playground/validator/v10/translations/zh"
	"go-admin/global"
)

// 初始化翻译器
func initTrans(local string) error {
	// 断言,判断gin这个是不是  go-playground 这个 validator
	v, ok := binding.Validator.Engine().(*validator.Validate)
	if ok {
		// 注册一个获取json tag的自定义方法
		v.RegisterTagNameFunc(getJsonTag)
		//v.RegisterValidation("checkDeptName", checkDeptName)
		zhT := zh.New() // 中文翻译器
		enT := en.New() // 英文翻译器
		// 第一个参数是默认，其他可多选
		uni := ut.New(enT, zhT, enT)
		// 获取语言
		global.Trans, _ = uni.GetTranslator(local)
		// 注册翻译器
		switch local {
		case "zh":
			zhTranslations.RegisterDefaultTranslations(v, global.Trans)
		case "en":
			enTranslations.RegisterDefaultTranslations(v, global.Trans)
		default:
			zhTranslations.RegisterDefaultTranslations(v, global.Trans)
		}

		// 注册翻译
		//v.RegisterTranslation(
		//	"checkDeptName",
		//	global.Trans,
		//	registerTranslator("checkDeptName", "我是自定义信息"),
		//	translate,
		//)
	}
	return nil
}

// 部署翻译
func SetupTrans() error {
	return initTrans("zh")
}
